
class Local {
  constructor(key) {
    this.key = key;
    this.initLo();
  }
  setData(key, value) { // 保存键值对到本地
    if (typeof value === 'undefined') {
      return localStorage.setItem(this.key, JSON.stringify(key));
    }
    if (typeof value === 'string') {
      return localStorage.setItem(key, value);
    }
    try {
      localStorage.setItem(key, JSON.stringify(value));
    } catch (err) {
      return err;
    }
  }
  getData(key) { // 获取指定key的数据
    const value = localStorage.getItem(key || this.key);
    try {
      return JSON.parse(value);
    } catch (err) {
      return value;
    }
  }
  removeData(key) { // 删除指定key的数据
    return localStorage.removeItem(key);
  }
  clearData() { // 删除所有的本地数据
    return localStorage.clear();
  }
  initLo() { // 初始化
    if (!window.localStorage) {
      throw new Error("浏览器不支持 localstorage 本地存储！！！")
    }
  }
}

(function local(local = 'local') {
  var local_ = local;
  if (window[local]) return console.log('属性名重复！！');
  try {
    window[local_] = new Local(local);
    console.log('封装本地存储成功，可以直接使用 ' + local_ + ' 对象来操作本地存储数据！')
  } catch (err) {
    console.log(err)
    return err;
  }
})("db")	// 自定义缓存名